#!/sbin/openrc-run
# Copyright 1999-2012 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2

description="MythTV backend recording daemon"
extra_started_commands="resched upnprebuild"
description_resched="Forces the recording scheduler to update"
description_upnprebuild="Rebuilds the UPnP media cache"

MYTHBACKEND_OPTS=${MYTHBACKEND_OPTS:-"${MYTHBACKEND_OPTS}"}
MYTHBACKEND_VERBOSE=${MYTHBACKEND_VERBOSE:-"general"}
MYTHBACKEND_LOGGING=${MYTHBACKEND_LOGGING:-"files"}

name="MythTV backend"
command="/usr/bin/mythbackend"
pidfile="/run/mythtv/mythbackend.pid"
start_stop_daemon_args="--pidfile ${pidfile} --user mythtv:video"
command_args="--daemon --pidfile ${pidfile} --verbose ${MYTHBACKEND_VERBOSE} ${MYTHBACKEND_OPTS}"

depend() {
	# mythbackend doesn't need to run on the same machine that
	# mysql runs on. so its use for that reason
	use logger net.lo mysql LCDd
}

start_pre() {
	case "${MYTHBACKEND_LOGGING}" in
		database) logging="--enable-dblog" ;;
		syslog\ *) logging="--${MYTHBACKEND_LOGGING}" ;;
		files) logging="--logpath /var/log/mythtv" ;;
		console) logging="--nologserver" ;;
		*)
			eerror "Invalid MYTHBACKEND_LOGGING value"
			exit 1
			;;
	esac

	#fixes for bug #101308
	unset DISPLAY
	unset SESSION_MANAGER

	# Work around any strange permissions that may be on these files.
	[ "x${MYTHBACKEND_LOGGING}" = "xfiles" ] && \
		checkpath --directory --owner mythtv:video --mode 0755 /var/log/mythtv
	checkpath --directory --owner mythtv:video --mode 0775 /home/mythtv
	checkpath --directory --owner mythtv:video --mode 0750 /run/mythtv
}

start() {
	ebegin "Starting ${name}"
	start-stop-daemon --start ${start_stop_daemon_args} --exec ${command} \
		-- ${command_args} ${logging}
	eend $?
}

stop() {
	ebegin "Stopping ${name}"
	start-stop-daemon --stop --retry 10 --progress --pidfile ${pidfile}
	eend $?
}

resched() {
	ebegin "Updating the recording scheduler"
	${command} --resched
	eend $?
}

upnprebuild() {
	ebegin "Rebuilding UPnP media cache"
	${command} --upnprebuild
	eend $?
}
